অ্যাপাচি অ্যাকটিভএমকিউ (Apache ActiveMQ) এবং স্প্রিং ফ্রেমওয়ার্ক (Spring Framework) একে অপরের সাথে মেসেজিং সিস্টেমের জন্য দুর্দান্তভাবে ইন্টিগ্রেট হতে পারে। স্প্রিং JMS (Java Message Service) API ব্যবহার করে আপনি অ্যাপাচি অ্যাকটিভএমকিউ-এ মেসেজ প্রোডিউসার এবং কনজিউমার তৈরি করতে পারেন। অ্যাকটিভএমকিউ ব্রোকার কনফিগারেশন সেটআপের মাধ্যমে আপনি আপনার মেসেজিং সিস্টেমের কার্যকারিতা এবং স্কেলেবিলিটি নির্ধারণ করতে পারেন।
এখানে, Spring JMS এবং ActiveMQ Broker Configuration এর সংমিশ্রণে অ্যাপাচি অ্যাকটিভএমকিউ-তে মেসেজ প্রোডিউসার ও কনজিউমার তৈরি এবং ব্রোকার কনফিগারেশন কিভাবে সেটআপ করা যায় তা ব্যাখ্যা করা হবে।
স্প্রিং জেএমএস (JMS) কনফিগারেশন ব্যবহারের মাধ্যমে অ্যাপ্লিকেশন থেকে অ্যাকটিভএমকিউ-এর সাথে যোগাযোগ স্থাপন করা যায়। আপনি স্প্রিং কনটেইনারের মধ্যে JmsTemplate
এবং ConnectionFactory
ব্যবহৃত কনফিগারেশন তৈরি করতে পারেন, যা মেসেজ প্রোডিউসার এবং কনজিউমারকে কাজ করতে সাহায্য করবে।
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Connection Factory for ActiveMQ -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"/>
</bean>
<!-- JMS Template for sending and receiving messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="defaultDestinationName" value="queue/testQueue"/>
</bean>
<!-- Message Listener for receiving messages -->
<bean id="messageListener" class="com.example.MessageListener"/>
<bean id="messageListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destinationName" value="queue/testQueue"/>
<property name="messageListener" ref="messageListener"/>
</bean>
</beans>
এখানে:
ActiveMQConnectionFactory
: অ্যাকটিভএমকিউ ব্রোকারের জন্য কানেকশন ফ্যাক্টরি কনফিগার করা হয়েছে।JmsTemplate
: এটি মেসেজ প্রেরণ এবং গ্রহণের জন্য ব্যবহৃত হয়।DefaultMessageListenerContainer
: এটি স্প্রিং-এ অ্যাসিঙ্ক্রোনাস মেসেজ লিসেনিং পরিচালনা করতে ব্যবহৃত হয়।অ্যাকটিভএমকিউ ব্রোকার কনফিগারেশন সেটআপের মাধ্যমে আপনি transport connectors, message stores, এবং persistence adapters কনফিগার করতে পারেন। ব্রোকার কনফিগারেশন সাধারণত activemq.xml
ফাইলে করা হয়।
<broker xmlns="http://activemq.apache.org/schema/core"
brokerName="localhost"
dataDirectory="${activemq.data}">
<!-- Transport Connectors for ActiveMQ -->
<transportConnectors>
<transportConnector uri="tcp://localhost:61616"/>
</transportConnectors>
<!-- Persistence Adapter Configuration -->
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb"/>
</persistenceAdapter>
<!-- Destinations for Queues and Topics -->
<destinationPolicy>
<policyMap>
<policyEntries>
<policyEntry queue=">" memoryLimit="104857600"/>
<policyEntry topic=">" memoryLimit="104857600"/>
</policyEntries>
</policyMap>
</destinationPolicy>
</broker>
এখানে:
transportConnectors
: এটি ব্রোকারের বিভিন্ন কনেকশন পোর্ট কনফিগার করে, যেমন TCP পোর্ট (61616) ব্যবহার করা হয়েছে।persistenceAdapter
: এটি মেসেজ সংরক্ষণের জন্য কনফিগার করা হয়। এখানে KahaDB ব্যবহার করা হয়েছে, যা ডেটা সংরক্ষণ এবং মেসেজ পাসিংয়ের জন্য ব্যবহৃত হয়।destinationPolicy
: এখানে কিউ এবং টপিকের জন্য মেমরি সীমা নির্ধারণ করা হয়েছে।স্প্রিং জেএমএস ব্যবহার করে অ্যাপ্লিকেশন থেকে মেসেজ প্রোডিউসার এবং কনজিউমার তৈরি করা হয়।
import org.springframework.jms.core.JmsTemplate;
import javax.jms.TextMessage;
public class MessageProducer {
private JmsTemplate jmsTemplate;
public void sendMessage(String message) {
jmsTemplate.convertAndSend("queue/testQueue", message);
}
}
এখানে:
JmsTemplate.convertAndSend()
: মেসেজটি কিউ তে পাঠানোর জন্য ব্যবহৃত হয়।import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
public class MessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
try {
TextMessage textMessage = (TextMessage) message;
System.out.println("Received message: " + textMessage.getText());
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে:
MessageListener
: এটি মেসেজ গ্রহণ করার জন্য ব্যবহৃত হয়। মেসেজটি গ্রহণের পর তা প্রক্রিয়া করা হয়।JmsTemplate
এবং MessageListener
ব্যবহার করে মেসেজ প্রেরণ এবং গ্রহণ করা হয়।transportConnectors
, persistenceAdapter
, এবং destinationPolicy
কনফিগার করা হয়। এটি মেসেজ ট্রান্সপোর্ট, ডেটা স্টোরেজ, এবং কিউ/টপিক পরিচালনা করে।এই কনফিগারেশন এবং প্রোগ্রামিং মডেল অ্যাকটিভএমকিউ এবং স্প্রিং ফ্রেমওয়ার্কের মাধ্যমে শক্তিশালী, স্কেলযোগ্য এবং রিলায়েবল মেসেজিং সিস্টেম তৈরি করতে সহায়তা করে।
common.read_more